<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    //官网：slice(start, [end]) 参数开始索引和结束索引，结束索引可以省略
    //（1）slice(start,end) :从start到end(不包括)截取数组，并把新的内容作为新的数组返回。原来的数组不变。
    //slice()方法，start和end分别表示起始点和结束点的索引，返回两个点中间的元素
    // 1，不包含end   2，不改变原有数组   3，返回获取到的两点之间的元素 4，起始i为0
    var first = {"0":11,"1":222,length:2};
    var b = Array.prototype.slice.call(first);
    console.log(b.shift());
    var arr = [1,2,3,4,5];
    var importTest = arr.slice();//不传参数
    console.log(importTest);
    var change = arr.slice(1,4);//传两个参数
    console.log(arr);//[1, 2, 3, 4, 5]
    console.log(change);//[2, 3, 4]@@@该方法返回的是截取到的部分
    var and = arr.slice(1);//传一个参数
    console.log(and);//[2, 3, 4, 5]//单个参数是获取start后面的所有元素
    var and1 = arr.slice(0);
    console.log(and1);//[1,2,3,4,5]不变
    var again = arr.slice(1,-1);
    console.log(again);//[2, 3, 4]//-1表示的是最后一个元素，-2,表示倒是第二个
    var again1 = arr.slice(-3,-1);//【1参和2参都可以是负数】
    console.log(again1);//[3, 4]
//（2）splice(x,y,z) 从x开始清除长度为y的元素，并用z替换。【该方法返回被替换部分】
// z类似于item1, ..., itemX这样。@@@原来的数组改变。【起始索引0，倒数-1。包含起始start】
// (2-1)此处传入的是单参
    //下面传入的是一参
    // （2-1-1）此时将会删除包含start开始后的所有数组元素。（包括删除start）
    var sky2 = [1,2,3,4,5,6];
    var resulet2 = sky2.splice(1);
    console.log(sky2);//[1]//截取后剩余的还是数组，只是仅仅有一个元素1.
    console.log(resulet2);//[2, 3, 4, 5, 6]
    //(2-1-2)传入参数为负值【从右往左数，起始位置是-1】
    var sky2_again = [1,2,3,4,5,6];
    var resulet2_again = sky2_again.splice(-2);
    console.log(sky2_again);//[1, 2, 3, 4]//截取后剩余的还是数组
    console.log(resulet2_again);//[5,6]
// (2-2)此处传的是两参，第一个是其实索引，第二个参数是删除的长度。如果2参是0，
// 则不删除，变成插入。
    var sky1 = [1,2,3,4,5,6];
    var result1 = sky1.splice(1,3);
    console.log(sky1);//[1, 5, 6]
    console.log(result1);//[2, 3, 4]
    var skyTwo = [1,2,3,4,5,6];
    var resultTwo = skyTwo.splice(1,0)
    console.log(skyTwo);//[1, 2, 3, 4, 5, 6]
    console.log(resultTwo);//[]//因为传入的第二个参数是0，所以没截取长度0，为空。
    //(2-3)参数个数大于等于3（大于等于3参数，是替换）
    var sky = [1,2,3,4,5,6];
    var result = sky.splice(1,4,"a","b");
    console.log(sky);//[1, "a", "b", 6]
    console.log(result);//[2, 3, 4, 5]
    var sky_and = [1,2,3,4,5,6];
    //（2-3-1）@@@>三参的时候，二参为0，这种特殊情况变成插入。
    var relsult_and = sky_and.splice(1,0,"a");
    console.log(sky_and);//[1,"a",2,3,4,5,6]//一定要注意这个插入的位置
    console.log(relsult_and);//[]
    //（2-3-2）>三参的时候，参数还可以是数组
    var other = [1,2,3,4,5,6];
    var other_res = other.splice(2,3,9,9,[11,12]);
    console.log(other);//[1,2,9,9,[11,12],4,5,6]
    console.log(other_res);//[3,4,5]

</script>
</body>
</html>